package net.dgg.dggcloud.service.jrcrm.entity.customer;

import net.dgg.dggcloud.service.entity.BaseEntity;
import net.dgg.dggcloud.service.entity.user.User;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;

/**
 * @ClassName: Customer-客户信息表
 * @Description: 用于客户基本信息维护
 * @Author: 周潮
 * @Date: 2017年11月03 14:22:26
 * @Version V1.0
 */

@Entity
@Table(name = "cus_customer")
public class Customer extends BaseEntity{

    //数据库表名
    public static final String TABLE_NAME = "cus_customer";

    /**
     * 家庭住址
     */
    @Column(name = "address")
    private String address;

    /**
     * 户口所在地
     */
    @Column(name = "registered_residence")
    private String registeredResidence;

    /**
     * 客户名称
     */
    @Column(name = "name")
    private String name;

    /**
     * 客户编号
     */
    @Column(name = "no")
    private String no;

    /**
     * 业务区域
     */
    @Column(name = "business_area")
    private String businessArea;

    /**
     * 客户类型
     */
    @Column(name = "customer_type")
    private String customerType;

    /**
     * 学历
     */
    @Column(name = "edu_background")
    private String eduBackground;

    /**
     * 婚姻状况
     */
    @Column(name = "marital_status")
    private String maritalStatus;

    /**
     * 子女个数
     */
    @Column(name = "children_num")
    private Integer childrenNum;

    /**
     * 性别（0保密1男2女）
     */
    @Column(name = "sex")
    private String sex;

    /**
     * 生日
     */
    @Column(name = "birthday")
    private String birthday;

    /**
     * 年龄
     */
    @Column(name = "age")
    private Integer age;

    /**
     * 身份证号码
     */
    @Column(name = "id_card")
    private String idCard;

    /**
     * 身份证正面照片地址
     */
    @Column(name = "img_front_url")
    private String imgFrontUrl;

    /**
     * 身份证反面照片地址
     */
    @Column(name = "img_back_url")
    private String imgBackUrl;

    /**
     * 主联系人id
     */
    @Column(name = "main_contact_id")
    private Long mainContactId;

    /**
     * 主联系人姓名
     */
    @Column(name = "main_contact_name")
    private String mainContactName;

    /**
     * 主联系人号码
     */
    @Column(name = "main_contact_no")
    private String mainContactNo;

    /**
     * 客户来源
     */
    @Column(name = "origin")
    private String origin;

    /**
     * 客户来源名称("-"号分隔，显示当前级和父级名称)
     */
    @Column(name = "origin_name")
    private String originName;

    /**
     * 客户星级
     */
    @Column(name = "level")
    private String level;

    /**
     * 客户邮箱
     */
    @Column(name = "email")
    private String email;

    /**
     * 客户号码(手机、座机、微信、QQ)
     */
    @Column(name = "customer_phone")
    private String customerPhone;

    /**
     * 联系方式(手机、座机、微信、QQ)
     */
    @Column(name = "contact_way")
    private String contactWay;

    /**
     * 锁定日期
     */
    @Column(name = "locked_time")
    private Date lockedTime;

    /**
     * 微信ID
     */
    @Column(name = "we_chat_id")
    private String weChatId;

    /**
     * 最新商机id
     */
    @Column(name = "last_bus_id")
    private Long lastBusId;

    /**
     * 企业税号
     */
    @Column(name = "enterprise_id")
    private String enterpriseId;

    /**
     * 最近一次跟进时间
     */
    @Column(name = "last_follow_time")
    private Date lastFollowTime;

    /**
     * 最近一次跟进人id
     */
    @Column(name = "last_follower_id")
    private Long lastFollowerId;

    /**
     * 最近一次跟进人姓名
     */
    @Column(name = "last_follower_name")
    private String lastFollowerName;

    /**
     * 最后一次跟进人部门id
     */
    @Column(name = "last_follower_org_id")
    private Long lastFollowerOrgId;

    /**
     * 最后一次跟进人部门名称
     */
    @Column(name = "last_follower_org_name")
    private String lastFollowerOrgName;

    /**
     * 最近一次跟进内容
     */
    @Column(name = "last_follow_content")
    private String lastFollowContent;

    /**
     * 最后一次回访时间
     */
    @Column(name = "last_return_visit_time")
    private Date lastReturnVisitTime;

    /**
     * 最后一次回访id
     */
    @Column(name = "last_return_visit_id")
    private Long lastReturnVisitId;

    /**
     * 最后一次回访人id
     */
    @Column(name = "last_return_visiter_id")
    private Long lastReturnVisiterId;

    /**
     * 最后一次回访人姓名
     */
    @Column(name = "last_return_visiter_name")
    private String lastReturnVisiterName;

    /**
     * 最后一次回访人部门id
     */
    @Column(name = "last_return_visiter_org_id")
    private Long lastReturnVisiterOrgId;

    /**
     * 外部系统读取标志
     */
    @Column(name = "read_flag")
    private String readFlag;

    /**
     * 外部系统来源标志
     */
    @Column(name = "source_flag")
    private String sourceFlag;

    /**
     * 客户属性
     */
    @Column(name = "customer_attr_flag")
    private String customerAttrFlag;

    /**
     * 客户备注（最新一次）
     */
    @Column(name = "remark")
    private String remark;

    /**
     * 客户电话（未加密）
     */
    @Column(name = "customer_phone_bak")
    private String customerPhoneBak;

    /**
     * 主联系人号码（未加密）
     */
    @Column(name = "main_contact_no_bak")
    private String mainContactNoBak;


    /**
     * 是否购买vip 卡 (0 否  1 是)
     */
    @Column(name = "is_buy_vip")
    private Integer isBuyVip;

    /**
     * vip 卡使用次数
     */
    @Column(name = "vip_card_use_numer")
    private Integer vipCardUseNumer;



    /**
     * 外部系统读取标志
     * @return read_flag 外部系统读取标志
     */
    public String getReadFlag() {
        return readFlag;
    }

    /**
     * 外部系统读取标志
     * @param readFlag 外部系统读取标志
     */
    public void setReadFlag(String readFlag) {
        this.readFlag = readFlag == null ? null : readFlag.trim();
    }

    /**
     * 外部系统来源标志
     * @return source_flag 外部系统来源标志
     */
    public String getSourceFlag() {
        return sourceFlag;
    }

    /**
     * 外部系统来源标志
     * @param sourceFlag 外部系统来源标志
     */
    public void setSourceFlag(String sourceFlag) {
        this.sourceFlag = sourceFlag == null ? null : sourceFlag.trim();
    }

    /**
     * 家庭住址
     * @return address 家庭住址
     */
    public String getAddress() {
        return address;
    }

    /**
     * 家庭住址
     * @param address 家庭住址
     */
    public void setAddress(String address) {
        this.address = address == null ? null : address.trim();
    }

    public String getRegisteredResidence() {
        return registeredResidence;
    }

    public void setRegisteredResidence(String registeredResidence) {
        this.registeredResidence = registeredResidence;
    }

    /**
     * 客户名称
     * @return name 客户名称
     */
    public String getName() {
        return name;
    }

    /**
     * 客户名称
     * @param name 客户名称
     */
    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    /**
     * 客户编号
     * @return no 客户编号
     */
    public String getNo() {
        return no;
    }

    /**
     * 客户编号
     * @param no 客户编号
     */
    public void setNo(String no) {
        this.no = no == null ? null : no.trim();
    }

    /**
     * 业务区域
     * @return business_area 业务区域
     */
    public String getBusinessArea() {
        return businessArea;
    }

    /**
     * 业务区域
     * @param businessArea 业务区域
     */
    public void setBusinessArea(String businessArea) {
        this.businessArea = businessArea == null ? null : businessArea.trim();
    }

    /**
     * 客户类型
     * @return customer_type 客户类型
     */
    public String getCustomerType() {
        return customerType;
    }

    /**
     * 客户类型
     * @param customerType 客户类型
     */
    public void setCustomerType(String customerType) {
        this.customerType = customerType == null ? null : customerType.trim();
    }

    /**
     * 学历
     * @return edu_background 学历
     */
    public String getEduBackground() {
        return eduBackground;
    }

    /**
     * 学历
     * @param eduBackground 学历
     */
    public void setEduBackground(String eduBackground) {
        this.eduBackground = eduBackground == null ? null : eduBackground.trim();
    }

    /**
     * 婚姻状况
     * @return marital_status 婚姻状况
     */
    public String getMaritalStatus() {
        return maritalStatus;
    }

    /**
     * 婚姻状况
     * @param maritalStatus 婚姻状况
     */
    public void setMaritalStatus(String maritalStatus) {
        this.maritalStatus = maritalStatus == null ? null : maritalStatus.trim();
    }

    /**
     * 子女个数
     * @return children_num 子女个数
     */
    public Integer getChildrenNum() {
        return childrenNum;
    }

    /**
     * 子女个数
     * @param childrenNum 子女个数
     */
    public void setChildrenNum(Integer childrenNum) {
        this.childrenNum = childrenNum;
    }

    /**
     * 性别（0保密1男2女）
     * @return sex 性别（0保密1男2女）
     */
    public String getSex() {
        return sex;
    }

    /**
     * 性别（0保密1男2女）
     * @param sex 性别（0保密1男2女）
     */
    public void setSex(String sex) {
        this.sex = sex;
    }

    /**
     * 生日
     * @return birthday 生日
     */
    public String getBirthday() {
        return birthday;
    }

    /**
     * 生日
     * @param birthday 生日
     */
    public void setBirthday(String birthday) {
        this.birthday = birthday == null ? null : birthday.trim();
    }

    /**
     * 年龄
     * @return age 年龄
     */
    public Integer getAge() {
        return age;
    }

    /**
     * 年龄
     * @param age 年龄
     */
    public void setAge(Integer age) {
        this.age = age;
    }

    /**
     * 身份证号码
     * @return id_card 身份证号码
     */
    public String getIdCard() {
        return idCard;
    }

    /**
     * 身份证号码
     * @param idCard 身份证号码
     */
    public void setIdCard(String idCard) {
        this.idCard = idCard == null ? null : idCard.trim();
    }

    /**
     * 身份证正面照片地址
     * @return img_front_url 身份证正面照片地址
     */
    public String getImgFrontUrl() {
        return imgFrontUrl;
    }

    /**
     * 身份证正面照片地址
     * @param imgFrontUrl 身份证正面照片地址
     */
    public void setImgFrontUrl(String imgFrontUrl) {
        this.imgFrontUrl = imgFrontUrl == null ? null : imgFrontUrl.trim();
    }

    /**
     * img_back_url
     * @return img_back_url img_back_url
     */
    public String getImgBackUrl() {
        return imgBackUrl;
    }

    /**
     * img_back_url
     * @param imgBackUrl img_back_url
     */
    public void setImgBackUrl(String imgBackUrl) {
        this.imgBackUrl = imgBackUrl == null ? null : imgBackUrl.trim();
    }

    /**
     * 主联系人id
     * @return main_contact_id 主联系人id
     */
    public Long getMainContactId() {
        return mainContactId;
    }

    /**
     * 主联系人id
     * @param mainContactId 主联系人id
     */
    public void setMainContactId(Long mainContactId) {
        this.mainContactId = mainContactId;
    }

    /**
     * 主联系人姓名
     * @return main_contact_name 主联系人姓名
     */
    public String getMainContactName() {
        return mainContactName;
    }

    /**
     * 主联系人姓名
     * @param mainContactName 主联系人姓名
     */
    public void setMainContactName(String mainContactName) {
        this.mainContactName = mainContactName == null ? null : mainContactName.trim();
    }

    /**
     * 主联系人号码
     * @return main_contact_no 主联系人号码
     */
    public String getMainContactNo() {
        return mainContactNo;
    }

    /**
     * 主联系人号码
     * @param mainContactNo 主联系人号码
     */
    public void setMainContactNo(String mainContactNo) {
        this.mainContactNo = mainContactNo == null ? null : mainContactNo.trim();
    }

    /**
     * 客户来源
     * @return origin 客户来源
     */
    public String getOrigin() {
        return origin;
    }

    /**
     * 客户来源
     * @param origin 客户来源
     */
    public void setOrigin(String origin) {
        this.origin = origin == null ? null : origin.trim();
    }

    /**
     * 客户来源名称("-"号分隔，显示当前级和父级名称)
     * @return origin_name 客户来源名称("-"号分隔，显示当前级和父级名称)
     */
    public String getOriginName() {
        return originName;
    }

    /**
     * 客户来源名称("-"号分隔，显示当前级和父级名称)
     * @param originName 客户来源名称("-"号分隔，显示当前级和父级名称)
     */
    public void setOriginName(String originName) {
        this.originName = originName == null ? null : originName.trim();
    }

    public String getLevel() {
        return level;
    }

    public void setLevel(String level) {
        this.level = level;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * 客户号码(手机、座机、微信、QQ)
     * @return customer_phone 客户号码(手机、座机、微信、QQ)
     */
    public String getCustomerPhone() {
        return customerPhone;
    }

    /**
     * 客户号码(手机、座机、微信、QQ)
     * @param customerPhone 客户号码(手机、座机、微信、QQ)
     */
    public void setCustomerPhone(String customerPhone) {
        this.customerPhone = customerPhone == null ? null : customerPhone.trim();
    }

    /**
     * 联系方式(手机、座机、微信、QQ)
     * @return contact_way 联系方式(手机、座机、微信、QQ)
     */
    public String getContactWay() {
        return contactWay;
    }

    /**
     * 联系方式(手机、座机、微信、QQ)
     * @param contactWay 联系方式(手机、座机、微信、QQ)
     */
    public void setContactWay(String contactWay) {
        this.contactWay = contactWay == null ? null : contactWay.trim();
    }

    /**
     * 锁定日期
     * @return locked_time 锁定日期
     */
    public Date getLockedTime() {
        return lockedTime;
    }

    /**
     * 锁定日期
     * @param lockedTime 锁定日期
     */
    public void setLockedTime(Date lockedTime) {
        this.lockedTime = lockedTime;
    }

    /**
     * 微信ID
     * @return we_chat_id 微信ID
     */
    public String getWeChatId() {
        return weChatId;
    }

    /**
     * 微信ID
     * @param weChatId 微信ID
     */
    public void setWeChatId(String weChatId) {
        this.weChatId = weChatId == null ? null : weChatId.trim();
    }

    /**
     * 最新商机id
     * @return last_bus_id 最新商机id
     */
    public Long getLastBusId() {
        return lastBusId;
    }

    /**
     * 最新商机id
     * @param lastBusId 最新商机id
     */
    public void setLastBusId(Long lastBusId) {
        this.lastBusId = lastBusId;
    }

    /**
     * 企业税号
     * @return enterprise_id 企业税号
     */
    public String getEnterpriseId() {
        return enterpriseId;
    }

    /**
     * 企业税号
     * @param enterpriseId 企业税号
     */
    public void setEnterpriseId(String enterpriseId) {
        this.enterpriseId = enterpriseId == null ? null : enterpriseId.trim();
    }

    /**
     * 最近一次跟进时间
     * @return last_follow_time 最近一次跟进时间
     */
    public Date getLastFollowTime() {
        return lastFollowTime;
    }

    /**
     * 最近一次跟进时间
     * @param lastFollowTime 最近一次跟进时间
     */
    public void setLastFollowTime(Date lastFollowTime) {
        this.lastFollowTime = lastFollowTime;
    }

    /**
     * 最近一次跟进人id
     * @return last_follower_id 最近一次跟进人id
     */
    public Long getLastFollowerId() {
        return lastFollowerId;
    }

    /**
     * 最近一次跟进人id
     * @param lastFollowerId 最近一次跟进人id
     */
    public void setLastFollowerId(Long lastFollowerId) {
        this.lastFollowerId = lastFollowerId;
    }

    /**
     * 最近一次跟进人姓名
     * @return last_follower_name 最近一次跟进人姓名
     */
    public String getLastFollowerName() {
        return lastFollowerName;
    }

    /**
     * 最近一次跟进人姓名
     * @param lastFollowerName 最近一次跟进人姓名
     */
    public void setLastFollowerName(String lastFollowerName) {
        this.lastFollowerName = lastFollowerName == null ? null : lastFollowerName.trim();
    }

    /**
     * 最后一次跟进人部门id
     * @return last_follower_org_id 最后一次跟进人部门id
     */
    public Long getLastFollowerOrgId() {
        return lastFollowerOrgId;
    }

    /**
     * 最后一次跟进人部门id
     * @param lastFollowerOrgId 最后一次跟进人部门id
     */
    public void setLastFollowerOrgId(Long lastFollowerOrgId) {
        this.lastFollowerOrgId = lastFollowerOrgId;
    }

    /**
     * 最后一次跟进人部门名称
     * @return last_follower_org_name 最后一次跟进人部门名称
     */
    public String getLastFollowerOrgName() {
        return lastFollowerOrgName;
    }

    /**
     * 最后一次跟进人部门名称
     * @param lastFollowerOrgName 最后一次跟进人部门名称
     */
    public void setLastFollowerOrgName(String lastFollowerOrgName) {
        this.lastFollowerOrgName = lastFollowerOrgName == null ? null : lastFollowerOrgName.trim();
    }

    /**
     * 最近一次跟进内容
     * @return last_follow_content 最近一次跟进内容
     */
    public String getLastFollowContent() {
        return lastFollowContent;
    }

    /**
     * 最近一次跟进内容
     * @param lastFollowContent 最近一次跟进内容
     */
    public void setLastFollowContent(String lastFollowContent) {
        this.lastFollowContent = lastFollowContent == null ? null : lastFollowContent.trim();
    }

    /**
     * 最后一次回访时间
     * @return last_return_visit_time 最后一次回访时间
     */
    public Date getLastReturnVisitTime() {
        return lastReturnVisitTime;
    }

    /**
     * 最后一次回访时间
     * @param lastReturnVisitTime 最后一次回访时间
     */
    public void setLastReturnVisitTime(Date lastReturnVisitTime) {
        this.lastReturnVisitTime = lastReturnVisitTime;
    }

    /**
     * 最后一次回访id
     * @return last_return_visit_id 最后一次回访id
     */
    public Long getLastReturnVisitId() {
        return lastReturnVisitId;
    }

    /**
     * 最后一次回访id
     * @param lastReturnVisitId 最后一次回访id
     */
    public void setLastReturnVisitId(Long lastReturnVisitId) {
        this.lastReturnVisitId = lastReturnVisitId;
    }

    /**
     * 最后一次回访人id
     * @return last_return_visiter_id 最后一次回访人id
     */
    public Long getLastReturnVisiterId() {
        return lastReturnVisiterId;
    }

    /**
     * 最后一次回访人id
     * @param lastReturnVisiterId 最后一次回访人id
     */
    public void setLastReturnVisiterId(Long lastReturnVisiterId) {
        this.lastReturnVisiterId = lastReturnVisiterId;
    }

    /**
     * 最后一次回访人姓名
     * @return last_return_visiter_name 最后一次回访人姓名
     */
    public String getLastReturnVisiterName() {
        return lastReturnVisiterName;
    }

    /**
     * 最后一次回访人姓名
     * @param lastReturnVisiterName 最后一次回访人姓名
     */
    public void setLastReturnVisiterName(String lastReturnVisiterName) {
        this.lastReturnVisiterName = lastReturnVisiterName == null ? null : lastReturnVisiterName.trim();
    }

    /**
     * 最后一次回访人部门id
     * @return last_return_visiter_org_id 最后一次回访人部门id
     */
    public Long getLastReturnVisiterOrgId() {
        return lastReturnVisiterOrgId;
    }

    /**
     * 最后一次回访人部门id
     * @param lastReturnVisiterOrgId 最后一次回访人部门id
     */
    public void setLastReturnVisiterOrgId(Long lastReturnVisiterOrgId) {
        this.lastReturnVisiterOrgId = lastReturnVisiterOrgId;
    }

    public String getCustomerAttrFlag() {
        return customerAttrFlag;
    }

    public void setCustomerAttrFlag(String customerAttrFlag) {
        this.customerAttrFlag = customerAttrFlag;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getCustomerPhoneBak1() {
        return customerPhoneBak;
    }

    public void setCustomerPhoneBak(String customerPhoneBak) {
        this.customerPhoneBak = "";// customerPhoneBak;
    }

    public String getMainContactNoBak() {
        return mainContactNoBak;
    }

    public void setMainContactNoBak(String mainContactNoBak) {
        this.mainContactNoBak = "";//mainContactNoBak;
    }

    /**
     * 设置最后一次跟进信息
     * @param user
     */
    public void setLastFollowInfo(User user){
        this.setLastFollowerId(user.getId());
        this.setLastFollowerName(user.getName() + user.getLoginName());
        this.setLastFollowerOrgId(user.getOrgId());
        this.setLastFollowTime(new Date());
    }

    public Integer getIsBuyVip() {
        return isBuyVip;
    }

    public void setIsBuyVip(Integer isBuyVip) {
        this.isBuyVip = isBuyVip;
    }

    public Integer getVipCardUseNumer() {
        return vipCardUseNumer;
    }

    public void setVipCardUseNumer(Integer vipCardUseNumer) {
        this.vipCardUseNumer = vipCardUseNumer;
    }
}